#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPaintEvent>
#include <QPainter>
#include <QPen>
#include <QBrush>
#include "database.h"
#include "addclient.h"
#include "authorization.h"
#include <QLabel>
#include "order.h"
#include <QSqlTableModel>
#include "addgoods.h"
#include "adddecloration.h"
#include <QVector>
#include "QCheckBox.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);

    void updateFrame();
    QMap<QString,QString> getCurrentClientInfo();
    QMap<QString,QString> getCurrentContactInfo(int id);

    QMap<QString,QString> getTransInfo(int id);
    QMap<QString,QString> getCurrentBorderInfo(int id);
    QMap<QString,QString> getCurrentDepartInfo(int id);
    QMap<QString,QString> getCurrentPactInfo(int id);

    QMap<QString,QString> getCurrentOrderInfo(int id);
    QMap<QString,QString> getCurrentFileInfo(int id);
    QMap<QString,QString> getCurrentGoodsInfo();
    QMap<QString,QString> getCurrentOfGoodsInfo();
    QMap<QString,QString> getCurrentDeclInfo();

    void setClientInfo();
    void setOrderInfo();

    void setAdditionalInfo();

    void setDeclorationList();
    void setCurrentGoodsList();
    void setCurrentTsInfo();
    void setCurrentTransInfo();
    void setCurrentPactsInfo();


    void setGoodsList();

    void setClientFullInfo();
    //void setOrderFullInfo();

    void setCurrentContactInfo();
    void setCurrentFileInfo();
    void setCurrentOrderInfo();
    void setCurrentDeclSumInfo();
    void setCurrentDestInfo();
    void setCurrentGoodsInfo();

    void setGoodsOfList();
    void setCurrGoodsInfo();

    void updateGoodsWidget(int row);
    void updateClientWidget(int row);

    void clearGoodsInfo();
    void clearDeclInfo();

    ~MainWindow();

    void paintEvent(QPaintEvent*);

private slots:
    void on_Exit_triggered();

    void on_ConnectWithDataBase_triggered();

    void on_AddClient_triggered();

    void on_DisconnectWithDataBase_triggered();

    void handleCellActivated(int row, int cell);

    void handleOrderCellActivated(int row, int cell);

    void handleGoodsCellActivated(int row, int cell);

    void handleDeclCellActivated(int row, int cell);

    void on_updateButton_clicked();

    void on__orgName_textEdited(const QString &arg1);

    void on__inn_textEdited(const QString &arg1);

    void on__bank_textEdited(const QString &arg1);

    void on__ogrn_textEdited(const QString &arg1);

    void on__cpp_textEdited(const QString &arg1);

    void on__curAccount_textEdited(const QString &arg1);

    void on__jurAdd_textChanged();

    void on__postAdd_textChanged();

    void on__prefix_textEdited(const QString &arg1);

    void on_addRowToContact_clicked();

    void on_contactList_cellChanged(int row, int column);

    void on_tabWidget_currentChanged(int index);

    void on_addOrder_triggered();

    void on_senderName_textEdited(const QString &arg1);
    void on_senderAddress_textEdited(const QString &arg1);
    void on_senderCountry_textEdited(const QString &arg1);
//    void on_senderCounClass_textEdited(const QString &arg1);

    void on_destinName_textEdited(const QString &arg1);
    void on_destinInn_textEdited(const QString &arg1);
    void on_destinKpp_textEdited(const QString &arg1);
    void on_destinOgrn_textEdited(const QString &arg1);
    void on_destinAddress_textEdited(const QString &arg1);

    void on_contract_textEdited(const QString &arg1);
    void on_contractFrom_textEdited(const QString &arg1);
    void on_contractTo_textEdited(const QString &arg1);
    void on_specification_textEdited(const QString &arg1);
    void on_specificationFrom_textEdited(const QString &arg1);
    void on_passport_textEdited(const QString &arg1);

//    void on_goodsNumber_textEdited(const QString &arg1);
    void on_ntwt_textEdited(const QString &arg1);
    void on_grwt_textEdited(const QString &arg1);
    void on_placeNumber_textEdited(const QString &arg1);
    void on_fullwt_textEdited(const QString &arg1);

    void on_deliveryTerms_textEdited(const QString &arg1);
//    void on_termsCombo_textEdited(const QString &arg1);
    void on_invoicePrice_textEdited(const QString &arg1);
//    void on_invCurr_textEdited(const QString &arg1);
    void on_trCountry_textEdited(const QString &arg1);
//    void on_trCClass_textEdited(const QString &arg1);




    void on_goodTitle_textEdited(const QString &arg1);

    void on_tnVedCode_textEdited(const QString &arg1);

    void on_country_textEdited(const QString &arg1);

    void on_registPlace_textEdited(const QString &arg1);

    void on_weightNetto_textEdited(const QString &arg1);

    void on_weightBrutto_textEdited(const QString &arg1);

    void on_comment_textChanged();

    void on_addGoodsButton_clicked();

    void on_deleteGoodsButton_clicked();

    void on_updateOrderButton_clicked();

    void on_placeExec_textEdited(const QString &arg1);

    void on_addDeclButton_clicked();

    void on_changeDeclButton_clicked();


    void on_updateSumInfoButton_clicked();

    void on_addPreBorderButton_clicked();

    void on_addPreDepartButton_clicked();

    void on_addTransCostsButton_clicked();

    void on_addEPactButtom_clicked();

    void on_settings_triggered();

    void on_goodsCombo_activated(const QString &arg1);

    void on_pushButton_2_clicked();

    void on_pushButton_6_clicked();

    void on_pushButton_4_clicked();

private:
    Ui::MainWindow *ui;
    DataBase myDb;
    QString currentClient;
    int currentClientRow;
    QLabel *updateStatus;
    QString currentOrder;
    int currentOrderRow;
    QString currentGoods;
    QString currentDecl;
    QVector<QCheckBox*> vectGoods;
    int currentDeclRow;
    int currentGoodsRow;
    QString currentFullGoods;
    QString currentOfGoods;


};

#endif // MAINWINDOW_H
